package ch.csp.transformer;

import java.util.ArrayList;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;

import ch.csp.exchange.ParagraphWithLineAndWords;
import ch.csp.exchange.ParagraphWithLines;
import ch.csp.exchange.ParagraphWithWords;

public class JustifyTransformerTest {

	ArrayList<ParagraphWithWords> paraWordList = new ArrayList<ParagraphWithWords>();
	ArrayList<ParagraphWithLineAndWords> input;
	LineTransformer lTransformer;
	JustifyTransformer jTransformer;

	@Before
	public void setUp() throws Exception {
		paraWordList.add(new ParagraphWithWords());
		paraWordList.get(paraWordList.size() - 1).words.add("Hallo");
		paraWordList.get(paraWordList.size() - 1).words.add("dies");
		paraWordList.get(paraWordList.size() - 1).words.add("ist");
		paraWordList.get(paraWordList.size() - 1).words.add("ein");
		paraWordList.get(paraWordList.size() - 1).words.add("Testsatz.");
		paraWordList.get(paraWordList.size() - 1).words.add("Mit");
		paraWordList.get(paraWordList.size() - 1).words.add("einem");
		paraWordList.get(paraWordList.size() - 1).words.add("zusätzlichen");
		paraWordList.get(paraWordList.size() - 1).words.add("sehr");
		paraWordList.get(paraWordList.size() - 1).words.add("langem");
		paraWordList.get(paraWordList.size() - 1).words.add("Wort");
		paraWordList.get(paraWordList.size() - 1).words.add("hier:");
		paraWordList.get(paraWordList.size() - 1).words
				.add("Superdupergagimistshitmotherfuckertestthisstuff");

		paraWordList.add(new ParagraphWithWords());
		paraWordList.get(paraWordList.size() - 1).words.add("Hallo");
		paraWordList.get(paraWordList.size() - 1).words.add("dies");
		paraWordList.get(paraWordList.size() - 1).words.add("ist");
		paraWordList.get(paraWordList.size() - 1).words.add("ein");
		paraWordList.get(paraWordList.size() - 1).words.add("Testsatz.");
		paraWordList.get(paraWordList.size() - 1).words.add("Mit");
		paraWordList.get(paraWordList.size() - 1).words.add("einem");
		paraWordList.get(paraWordList.size() - 1).words.add("zusätzlichen");
		paraWordList.get(paraWordList.size() - 1).words.add("sehr");
		paraWordList.get(paraWordList.size() - 1).words.add("langem");
		paraWordList.get(paraWordList.size() - 1).words.add("Wort");
		paraWordList.get(paraWordList.size() - 1).words.add("hier:");
		paraWordList.get(paraWordList.size() - 1).words
				.add("Superdupergagimistshitmotherfuckertestthisstuff");
		
		lTransformer = new LineTransformer(paraWordList,20);
		input = lTransformer.transform();

	}

	@After
	public void tearDown() throws Exception {
		paraWordList = new ArrayList<ParagraphWithWords>();
	}

	@Test
	public void test() {
		jTransformer = new JustifyTransformer(input);
		ArrayList<ParagraphWithLines> result = jTransformer.transform();
		print(result);
		assertTrue(true);
		
	}
	
	private void print(ArrayList<ParagraphWithLines> result){
		for(ParagraphWithLines paragraph : result) {
			System.out.println("==========JUSTIFY TRANSFORMER: NEW PARAGRAPH=========");
			for(String line : paragraph.lines) {
				System.out.println("Line: " + line);
			}
		}
	}

}
